﻿package com.rbac.system.service;

import java.util.List;
import java.util.Set;

/**
 * 权限依赖服务接口
 * 用于处理权限分配时的依赖关系
 */
public interface PermissionDependencyService {
    
    /**
     * 解析权限依赖，返回包含所有必需权限的完整列表
     * 
     * @param permissionIds 原始权限ID列表
     * @return 包含依赖权限的完整权限ID列表
     */
    Set<Long> resolvePermissionDependencies(List<Long> permissionIds);
    
    /**
     * 解析菜单依赖，返回包含所有必需菜单的完整列表
     * 
     * @param menuIds 原始菜单ID列表
     * @return 包含依赖菜单的完整菜单ID列表
     */
    Set<Long> resolveMenuDependencies(List<Long> menuIds);
    
    /**
     * 根据权限编码获取相关的菜单权限
     * 
     * @param permissionCodes 权限编码列表
     * @return 相关的菜单ID列表
     */
    Set<Long> getRelatedMenusByPermissions(List<String> permissionCodes);
    
    /**
     * 获取权限的所有父级权限
     * 
     * @param permissionId 权限ID
     * @return 父级权限ID列表
     */
    Set<Long> getParentPermissions(Long permissionId);
    
    /**
     * 获取菜单的所有父级菜单
     * 
     * @param menuId 菜单ID
     * @return 父级菜单ID列表
     */
    Set<Long> getParentMenus(Long menuId);
}


